# Python字符串行分割：splitlines的妙用

# [钛妹]: 基础不牢谈何AI？今天钛妹又学习了Python的splitlines方法，欢迎大神们指正错误！
# [钛哥]: 哈哈，我来给你演示一下，这个方法可专门对付多行文本的拆分！

txt_basic = "Thank you for the music\nWelcome to the jungle"

# [钛妹]: 我先试试最简单的用法，默认splitlines()就把换行符去掉了，对吗？
# [钛哥]: 没错，默认不保留换行符，来看看结果：
lines_basic = txt_basic.splitlines()
print("示例1 - 默认不带换行符:", lines_basic)

# [钛妹]: 果然，只是把内容拆成两段，没有换行符了。那要是我想保留换行符呢？
# [钛哥]: 在splitlines(True)里传入True，就能把换行符一并保留。
lines_with_breaks = txt_basic.splitlines(True)
print("示例2 - 保留换行符:", lines_with_breaks)

# [钛妹]: 这样就能看到“\\n”跟着文本了，区分更直观。那如果文本里有回车或其他换行符，会一起识别吗？
# [钛哥]: 是的，splitlines()会识别常见的行结束符，如\\n、\\r、\\r\\n等等。咱们可以再加点花样演示。

txt_multiple = "Hello\rWorld\nPython\r\nis\nAwesome"
# [钛妹]: 这里面有\\r、\\n、以及\\r\\n的混合换行，看看都能识别吗？
# [钛哥]: 用splitlines()直接拆开，保留换行符试试。
lines_mixed = txt_multiple.splitlines(True)
print("示例3 - 混合换行符, 保留行结束符:", lines_mixed)

# [钛妹]: 它都给我拆分好了，还忠实地保留了各种换行符，真是不错！
# [钛哥]: 对于处理跨平台文本文件，splitlines()的表现会比单纯用split("\\n")更稳妥。

# [钛妹]: 那如果字符串末尾带个换行符，会不会多拆分出空字符串？
# [钛哥]: 不用担心，splitlines()自动处理，不会冒出额外空元素。

txt_trailing = "Last line\n"
lines_trail = txt_trailing.splitlines()
print("示例4 - 字符串末尾带换行符:", lines_trail)

# [钛妹]: 确实只拆出了一个元素，末尾多余的换行没带来空元素。
# [钛哥]: 所以说，在需要按行处理多行文本时，splitlines()是最佳选择，简洁又智能。

# [钛妹]: 那总结一下吧？我怕忘了。
# [钛哥]: 好的，要点如下：
#         1. splitlines()默认从各种换行符处拆分，适配\\n、\\r、\\r\\n等多种格式；
#         2. 若splitlines()里传True，就会把拆分出来的行尾换行符也保留在结果中；
#         3. 不会因为字符串末尾带换行符就额外多出空字符串，非常智能。
# [钛妹]: Nice，这样写多行处理简直不要太方便！

print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")